<?php
namespace app\common\controller;

use think\Controller;
use think\Db;

class Base extends Controller
{
    /**
     * @var null 服务名称  可在子类重载，若子类没有重载，则不会自动创建服务对象
     */
    protected $serviceName=null;
    /**
     * @var \app\common\service\Service
     */
    protected $service=null;
    /**
     * 系统初始化
     */
    public function _initialize()
    {
        $this->initService();
       
    }

    /**
     * 设置服务
     * @param null $serciceName
     */
    public function setService($serciceName=null){
        $this->serviceName=$serciceName;
    }

    /**
     * 初始化服务
     */
    protected function initService(){
        if($this->serviceName){
            $this->service=service($this->serviceName);
        }
    }
    
    

    /**
     * 在渲染视图前调用
     * 主要用于数据分配
     */
    public function beforeView(){
//        dump("beforeView");
    }

    /**
     * 加载模板输出
     * @access protected
     * @param string    $template 模板文件名
     * @param array     $vars     模板输出变量
     * @param array     $replace     模板替换
     * @param array     $config     模板参数
     * @return mixed
     */
    protected function fetch($template = '', $vars = [], $replace = [], $config = [])
    {
        $this->beforeView();
        return parent::fetch($template, $vars, $replace, $config);
    }

    /**
     * @param $res
     * @param bool $isajax
     */
    protected function showResult($res,$isajax=false){
        if($isajax){
            $this->ajaxReturn($res);
        }else{
            if($res['code']==1){
                $this->success($res['msg']);
            }else{
                $this->error($res['msg']);
            }
        }
    }

    /**
     * ajax返回数据
     * @param $res
     */
    protected function ajaxReturn($res){
        echo json_encode($res);
        exit();
    }

    /**
     * 输出日志
     */
    protected function log($key,$content,$type=1){
        $logService=new \app\common\service\Log();
        return $logService->log($key,$content,$type);
    }

    /**
     * 信息日志
     */
    public function infoLog($key,$content){
        return $this->log($key, $content,1);
    }

    /**
     * 错误日志
     */
    public function errorLog($key,$content){
        return $this->log($key, $content,3);
    }

    /**
     * 调试日志
     */
    public function debugLog($key,$content){
        return $this->log($key, $content,2);
    }


}
